//统一管理2个子模块里面的数据
//当触发一个事件时，统一执行里面的123程序

export default class Observer {
  constructor() {
    //一个数组容器，管理底下的观察者们
    this.observers = [];
  }

  add(fn) {
    //当是函数的时候确认为一个程序任务
    if (typeof fn === 'function') {
      this.observers.push(fn);
    }

    // console.log(this.observers);
    //[fn:handleCartItem, fn:setState, fn:setAddBtnState]
  }

  //统一执行的通知函数 
  //...args es6写法 铺开所有的观察者函数
  notify(...args) {
    this.observers.forEach(observer => {
      //单独执行每一个函数
      observer.call(...args);
    })
  }
}